﻿/*****************************************************************//**
 * @file    FITKOCCGraphObjectSketch.h
 * @brief   Graph object for sketch data object and OCC graph widget.
 *  
 * @author  ChengHaotian (yeguangbaozi@foxmail.com)
 * @date    2024-09-04
 *********************************************************************/

#ifndef __FITKOCCGRAPHOBJECTSKETCH_H__
#define __FITKOCCGRAPHOBJECTSKETCH_H__

#include "FITKOCCGraphObjectModel.h"

#include "FITKOCCGraphAdaptorAPI.h"

#include <QColor>

// Forward declaration
class QVariant;

namespace Interface
{
    class FITKAbsGeoSketch2D;
}

namespace Exchange
{
    /**
     * @brief   Graph object for sketch data object and OCC graph widget.
     * @author  ChengHaotian (yeguangbaozi@foxmail.com)
     * @date    2024-09-04
     */
    class FITKOCCGRAPHADAPTORAPI FITKOCCGraphObjectSketch : public FITKOCCGraphObjectModel
    {
        // Regist
        FITKGraphObjectRegist(FITKOCCGraphObjectSketch, FITKOCCGraphObjectModel);
        FITKCLASS(Exchange, FITKOCCGraphObjectSketch);

    public:
        /**
         * @brief   Constructor.
         * @param   sketchData: The sketch data object
         * @author  ChengHaotian (yeguangbaozi@foxmail.com)
         * @date    2024-09-04
         */
        FITKOCCGraphObjectSketch(Interface::FITKAbsGeoSketch2D* sketchData);

        /**
         * @brief   Destructor.
         * @author  ChengHaotian (yeguangbaozi@foxmail.com)
         * @date    2024-09-04
         */
        ~FITKOCCGraphObjectSketch() = default;

        /**
         * @brief   Set the select mode for this graph object's interactive objects.[override]
         * @param   mode: The select mode
         * @param   force: Force add the select mode[default]
         * @author  ChengHaotian (yeguangbaozi@foxmail.com)
         * @date    2024-09-05
         */
        void addSelectMode(CommonOCC::SelectMode mode, bool force = false) override;

    protected:
        /**
         * @brief   Constructor.
         * @author  ChengHaotian (yeguangbaozi@foxmail.com)
         * @date    2024-09-04
         */
        FITKOCCGraphObjectSketch() = default;

    };
}   // namespace Exchange

#endif // __FITKOCCGRAPHOBJECTSKETCH_H__
